This invention relates to the field of display systems, more particularly to display systems using gamma correction.
Micromechanical devices are small structures typically fabricated on a semiconductor wafer using techniques such as optical lithography, doping, metal sputtering, oxide deposition, and plasma etching which have been developed for the fabrication of integrated circuits.
A digital micromirror device (DMDs), sometimes referred to as a deformable micromirror device, is a type of micromechanical device. Other types of micromechanical devices include accelerometers, pressure and flow sensors, gears and motors. While some micromechanical devices, such as pressure sensors, flow sensors, and DMDs have found commercial success, other types have not yet been commercially viable.
Digital micromirror devices are primarily used in optical display systems. In display systems, the DMD is a light modulator that uses digital image data to modulate a beam of light by selectively reflecting portions of the beam of light to a display screen. While analog modes of operation are possible, DMDs typically operate in a digital bistable mode of operation and as such are the core of the first true digital full-color image projection systems.
Although DMD-based display systems offer excellent image fidelity, use of the DMD requires existing video sources to be adapted for display on a DMD-based display. For example, broadcast video signals are adapted for display by a cathode ray tube (CRT). Since the intensity response of a CRT is not linear, the intensity component of a broadcast signal is adjusted to compensate for the CRT response. This compensation is generally called gamma correction or gamma compensation. CRT-ready video signals displayed on a non-CRT display, for example on LCD or DMD-based display systems, have artificial intensity levels. To avoid the image distortion caused by the artificial intensity levels, the intensity level of the video signal must be compensated prior to display on a non-CRT-based display system.
Gamma correction may be performed by calculating a corrected image data value for each input gamma-adjusted image data value using a degamma equation. Because calculating a corrected value for each image data value demands a lot of processing power, gamma correction is typically performed by translating a gamma-adjusted input image data value to a gamma corrected output value by the use of translation tables, or lookup tables. Each translation table requires a separate location for each possible input value. The input data value is used as an address or offset into the translation table, and the data value stored in the addressed location is the corrected data word.
Many display systems are designed to operate in several modes. For example, some display systems are required to accept NTSC and PAL broadcast input signals, as well as computer generated RGB formats. Separate degamma translation tables typically are used for each video signal component in each video mode further increasing the storage capacity required just to store the degamma compensation tables. Furthermore, the degamma translation tables used for each RGB degamma component often is unique. Using unique RGB degamma translation tables facilitates color correction of the video image data.
The degamma data is generally stored in a non-volatile memory, typically a read only memory (ROM) included in a control processor integrated circuit, and transferred to a random access memory (RAM) lookup table when the display system is powered up. The large amount of memory required simply to store the necessary degamma translation information begins to tax the storage abilities of the control processor""s on-board ROM. A method and system to reduce this storage burden is needed.
Objects and advantages will be obvious, and will in part appear hereinafter and will be accomplished by the present invention which provides a method and system for minimizing the storage capacity required to store the degamma information. One embodiment of the claimed invention provides a method of decompressing a degamma translation table. The method comprising the steps of reading a series of compressed degamma values from a list, calculating a decompressed degamma value for each compressed degamma value in said list using the equation:
ucgam(i)=cgam(i)xe2x88x92offset+2*ucgam(ixe2x88x921)xe2x88x92ucgam(ixe2x88x922)
where ucgam is the decompressed degamma value, cgam is the compressed degamma value, and offset is an optional offset value.
According to another embodiment of the disclosed invention, a method of compressing a degamma translation table is provided. The method comprising the steps of: providing a list of gamma correction words, each gamma correction word occupying a position in the list of gamma correction words and representing a gamma corrected data word for an input word having a value equivalent to the position of the gamma correction word, calculating a compressed value corresponding to each gamma correction word in said list of gamma correction words by utilizing a corresponding gamma correction word, a prior gamma correction word, and a twice-prior gamma correction word. The calculating step comprising, for each compressed value, initializing an interim compressed value, adding the gamma correction word to the interim compressed value, subtracting two times the prior gamma correction word from the interim compressed value, adding the twice-prior gamma correction word to the interim compressed value, and setting the compressed value equal to the interim compressed value.
According to yet another embodiment of the disclosed invention, a display system is disclosed. The display system is comprised of a display device and a video processor for receiving image data from a data source and outputting display data to the display device. The control processor comprises a non-volatile memory storing at least one set of compressed degamma data and a random access memory. The video processor reads the compressed degamma data from the non-volatile memory, decompresses the compressed degamma data, and stores the decompressed degamma data in the random access memory, the decompression performed using the equation:
ucgam(i)=cgam(i)xe2x88x92offset+2*ucgam(ixe2x88x921)xe2x88x92ucgam(ixe2x88x922)
where ucgam is the decompressed degamma value, cgam is the compressed degamma value, and offset is an optional offset value.